package NTree;

import java.util.ArrayList;
import java.util.List;

/*
N 叉树的后序遍历
给定一个 n叉树的根节点root，返回 其节点值的 后序遍历 。
n 叉树 在输入中按层序遍历进行序列化表示，每组子节点由空值 null 分隔（请参见示例）。

示例 1：
输入：root = [1,null,3,2,4,null,5,6]
输出：[5,6,3,2,4,1]
示例 2：
输入：root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
输出：[2,6,14,11,7,3,12,8,4,13,9,10,5,1]

作者：LeetCode
链接：https://leetcode.cn/leetbook/read/n-ary-tree/x0i5yi/
 */

public class _12N叉树的后序遍历 {
    public static void main(String[] args) {

    }

    class Node {
        public int val;
        public List<Node> children;

        public Node() {
        }

        public Node(int _val) {
            val = _val;
        }

        public Node(int _val, List<Node> _children) {
            val = _val;
            children = _children;
        }
    }


    //DFS
    //全局成员版
    class Solution {
        List<Integer> res = new ArrayList<>();

        public List<Integer> postorder(Node root) {
            dfs(root);
            return res;
        }

        public void dfs(Node root) {
            if (root == null) {
                return;
            }
            for (Node child : root.children) {
                dfs(child);
            }
            res.add(root.val);
        }
    }

}
